package com.jt.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

import java.util.HashSet;
import java.util.Set;

@Configuration //标识配置类
@PropertySource("classpath:/properties/redis.properties")
public class JedisConfig {

	@Value("${redis.nodes}")
	private String nodes;

	/**
	 * spring整合redis集群
	 */
	@Bean
	public JedisCluster jedisCluster() {
		Set<HostAndPort> set = new HashSet<>();
		String[] nodeArray = nodes.split(",");
		for (String node : nodeArray) {
			String[] nodeTemp = node.split(":");
			String host = nodeTemp[0];
			int port = Integer.parseInt(nodeTemp[1]);
			HostAndPort hostAndPort = new HostAndPort(host, port);
			set.add(hostAndPort);
		}
		return new JedisCluster(set);
	}


//	@Value("${redis.nodes}")
//	private String nodes;
//
//
//	/**
//	 * 添加redis分片的配置
//	 * 需求1: 动态的获取IP地址/PORT端口
//	 * 动态的获取多个的节点信息, 方便以后扩展
//	 */
//	@Bean
//	public ShardedJedis shardedJedis() {
//		String[] split = nodes.split(",");
//		List<JedisShardInfo> list = new ArrayList<>();
//		for (String node : split) {
//			String[] nodeArr = node.split(":");
//			list.add(new JedisShardInfo(nodeArr[0], Integer.valueOf(nodeArr[1])));
//		}
//		return new ShardedJedis(list);
//	}


//	@Value("${redis.host}")
//	private String host;
//
//	@Value("${redis.port}")
//	private Integer port;
//
//	/**
//	 * 将Jedis对象交给spring容器管理
//	 */
//	@Bean
//	public Jedis jedis() {
//		//将代码写死不利于扩展,所以将固定的配置添加到配置文件中
//		return new Jedis(host, port);
//	}

}
